手動整合 Exim 郵件伺服器

如果在應用程式的初始設定過程中略過應用程式與郵件伺服器的自動整合,則必須手動將 KSMG 與郵件伺服器整合。

您可以使用動態連結庫 (dlfunc) 手動設定 KSMG 與 Exim 郵件伺服器的佇列前整合。透過佇列前整合,KSMG 在郵件最終進入Exim 郵件伺服器的佇列之前對其進行掃描。不支援佇列後整合。

根據作業系統的具體分發,您必須修改 Exim 郵件伺服器的一個或多個設定檔。

若要執行 KSMG 與 Exim 的佇列前整合:

  1. 確保 Exim 郵件伺服器支援 dlfunc 動態連結庫的功能。為此,執行以下指令:

    exim -bV

    如果Support for部分包含Expand_dlfunc行,則 Exim 郵件伺服器支援dlfunc 動態載入庫。

  2. 對 Exim 設定檔進行備份。
  3. 修改acl_smtp_data的存取控制清單。為此,請在 Exim 設定檔中尋找以下行:

    acl_smtp_data = acl_check_data(可以使用不同的變數或巨集來取代acl_check_data

    並在行

    acl_check_data:(或包含不同變數或巨集的字串)

    後面加入以下行:

    # Manually added block ksmg-exim-filter-dflunc begin

    warn set acl_m_ksmg_input_directory = ${spool_directory}/input

    set acl_m_ksmg_lookup_result = ${lookup {$message_id-D} dsearch {$acl_m_ksmg_input_directory}}

    warn condition = ${if eq {$acl_m_ksmg_lookup_result}{}{yes}{no}}

    set acl_m_ksmg_input_directory = ${spool_directory}/input/${substr{5}{1}{$message_id}}

    warn set acl_m_ksmg_answer = ${dlfunc{DLFUNC_LIBRARY_FULLPATH}{scan}{$acl_m_ksmg_input_directory}}

    defer condition = ${if match {$acl_m_ksmg_answer}{^[245]}{no}{yes}}

    log_message = KSMG check failed, unexpected answer: $acl_m_ksmg_answer

    defer condition = ${if match {$acl_m_ksmg_answer}{^4}{yes}{no}}

    log_message = KSMG check defer: $acl_m_ksmg_answer

    deny condition = ${if match {$acl_m_ksmg_answer}{^5}{yes}{no}}

    log_message = KSMG check reject: $acl_m_ksmg_answer

    message = This message is blocked due to security reason

    warn condition = ${if match {$acl_m_ksmg_answer}{^2}{yes}{no}}

    logwrite = KSMG check accept: $acl_m_ksmg_answer

    # Manually added block ksmg-exim-filter-dlfunc ends here

    其中 DLFUNC_LIBRARY_FULLPATH 是 dlfunc 函式庫的路徑。函式庫的路徑取決於 Exim 的版本,可能看起來如下:

    • 對於從 4.86 到 4.90 的 Exim 版本(不包括在內) — /opt/kaspersky/ksmg/lib/libklms-exim-abi20-1.so
    • 對於從 4.90 到 4.93 的 Exim 版本(不包括在內) — /opt/kaspersky/ksmg/lib/libklms-exim-abi20-2.so
    • 對於從 4.93 到 4.94 的 Exim 版本(不包括在內) — /opt/kaspersky/ksmg/lib/libklms-exim-abi31.so
    • 對於從 4.94 到 4.96 的 Exim 版本(不包括在內) — /opt/kaspersky/ksmg/lib/libklms-exim-abi41.so
    • 對於 4.96 及更高版本的 Exim — /opt/kaspersky/ksmg/lib/libklms-exim-abi60.so
  4. 如有必要,編輯完設定檔後,您可以重新產生主Exim 設定檔。
  5. kluser使用者加入包含啟動exim處理程序的使用者的群組。

    預設情況下,該群組在 Red Hat Enterprise Linux 和 Rocky Linux 中稱為“exim”,在Ubuntu 中稱為“Debian-exim”。

  6. 將啟動 exim 處理程序的使用者加入kluserskl_var_users群組。

    預設情況下,Red Hat Enterprise Linux 和 Rocky Linux 中的使用者名稱為“exim”,Ubuntu 中的使用者名為“Debian-exim”。

  7. 在 /etc/opt/kaspersky/ksmg/filters.conf 過濾器設定檔案的[global]部分中,設定以下參數值:

    scanner=unix:/var/run/ksmg/klms_scanner_sock

    header-guard=false

    • 如果PrivateTmp設定為false或未在 Exim Unit 檔案中指定:

      workdir=/tmp

    • 如果PrivateTmp在 Exim Unit 檔案中設定為true

      workdir=/var/opt/kaspersky/ksmg/tmp

  8. 在 /var/opt/kaspersky/ksmg/installer.dat 檔案中,設定以下參數值:

    MTA_INTEGRATION_METHOD=dlfunc

    MTA_INTEGRATION_MODE=prequeue

    filters_workdir=<步驟 7 中“workdir”參數的值>

    mta=manual

    START_SMTP_PROXY=0

    START_MILTER=0

  9. 重新啟動 ksmg 服務。
  10. 重新啟動 Exim 郵件伺服器。

與 Exim 的整合已完成。

頁面頂端